package cn.tedu._02mybatis.mapper;

import cn.tedu._02mybatis.pojo.entity.Weibo;
import cn.tedu._02mybatis.pojo.vo.*;
import org.apache.ibatis.annotations.*;

import java.util.List;


public interface WeiboMapper {
    //1.添加微博
   // @Insert("INSERT INTO weibo(content,created,user_id) VALUES (#{content},#{created},#{userId})")
    int insertWeibo(Weibo weibo);

    // 2.通过weiboid删除微博
    //@Delete("DELETE  FROM weibo WHERE id=#{weiboID}")
    int deleteWeibo(Long weiboID);
    // 3.修改指定微博信息 参数Weibo weibo
    //@Update("UPDATE weibo SET content=#{content},created=#{created},user_id=#{userId} WHERE id=#{id}")
    int updateWeibo(Weibo weibo);

    //4.查询 单条数据全字段查询 通过weiboid
    // weibo属性userId  表中字段user_id 需要用别名统一，否则MyBatis装配不上
    //@Select("SELECT id,content,created,user_id userId FROM weibo WHERE id=#{weiboId}")
    Weibo selectWeiboById(Long weiboId);

    //5.查询 多条数据全字段查询 （查询所有微博信息）
    //@Select("SELECT  id,content,created,user_id userId FROM weibo")
    List<Weibo> selectWeibo();

    //6. 单条数据部分字段查询   查询指定微博的内容和发布时间
    //@Select("SELECT content,created FROM weibo WHERE id=#{weiboId}")
    SelectWeiboVO1 selectWeiboVO1(Long weiboId);

    //7.查询指定用户发的所有微博的id和内容content
    //@Select("SELECT id,content FROM weibo WHERE user_id=#{userId}")
    List<SelectWeiboVO2> selectWeiboVO2(Long userId);

    //8.动态修改微博信息
    int dynamicUpdateWeibo(Weibo weibo);
    //9.动态删除微博信息
    int dynamicDeleteWeibo(Long[] ids);
    //10.传入List删除微博信息
    int dynamicDeleteWeibo1(List<Long> ids);
    //11.查询总数
    int selectCount();

    //12.ResultMap  根据微博ID查询该条微博的ID,内容，用户ID
    ResultMapVO1 selectReusltMapVO1(Long weiboId);

    //13.ResultMap 多表：查询指定用户发布的微博信息，显示：用户id，用户昵称，微博集合List<Weibo>
    ResultMapVO2 selectResultMapVO2(Long userId);

    //14.ResultMap多表练习，指定微博的所有评论信息  参数 weiboId
    ResultMapVO3 selectResultMapVO3(Long weiboId);

    //15.查询微博的部分评论信息
    ResultMapVO4 selectResultMapVO4(Long weiboId);

}
